/*
 * Copyright (c) 2018.
 * http://www.ulabcare.com
 */

package com.mt.roll.upms.vo;

import com.mt.roll.core.enums.MenuCategoryEnum;
import com.mt.roll.core.validator.constraints.Enum;
import com.mt.roll.core.vo.CommonVo;
import com.mt.roll.core.vo.PageVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * <p>
 * 系统角色表
 * </p>
 *
 * @author jiff
 * @date 2018/11/22
 * @since 1.0
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@ApiModel(value = "角色视图对象", description = "用于查询角色信息")
public class SysRoleVo extends CommonVo implements PageVo.ConvertVo {

    private static final long serialVersionUID = 1L;

    /**
     * 主键，自增
     */
    @ApiModelProperty(value = "主键", required = true, example = "1")
    private Long id;

    /**
     * 角色编码
     */
    @ApiModelProperty(value = "角色编码", required = true, example = "manager")
    @NotBlank(message = "角色编码不能为空")
    private String code;

    /**
     * 角色名称
     */
    @ApiModelProperty(value = "角色名称", required = true, example = "管理员")
    @NotBlank(message = "角色名称不能为空")
    private String name;

    /**
     * 分类:1、pc，2、app，3、wechat，4、miniapp
     */
    @ApiModelProperty(value = "分类:1、pc，2、app，3、wechat，4、miniapp", required = true, example = "1")
    @NotNull(message = "角色分类不能为空")
    @Enum(message = "非法的角色分类", target = {MenuCategoryEnum.class})
    private Integer category;


    /**
     * 管理角色标志:1 管理角色0 非管理角色，管理角色不允许修改角色菜单关系
     */
    @ApiModelProperty(value = "管理角色标志:1 管理角色0 非管理角色，管理角色不允许修改角色菜单关系", required = true, example = "0")
    private Integer managerFlag;

    /**
     * 预设角色标志:1 预设 0 非预设
     */
    @ApiModelProperty(value = "预设角色标志:1 预设 0 非预设", required = true, example = "0")
    private Integer preset;

    /**
     * 用户是否分配该角色:true、已分配，false、未分配
     */
    @ApiModelProperty(value = "用户是否分配该角色:true、已分配，false、未分配，用于根据用户获取所有角色", required = false, example = "true")
    private boolean checked;


}
